package jdbc;
/*
JDBC中的事务控制
 */
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;


public class JDBCDemo11 {
    public static void main(String[] args) {
        try (Connection conn= DBUtil.getConnection();){
            conn.setAutoCommit(false);
            String s="INSERT INTO userinfo(username,password,nickname,age) VALUES(?,?,?,?)";
            PreparedStatement ps= conn.prepareStatement(s);
            ps.setString(1,"王五");
            ps.setString(2,"123456");
            ps.setString(3,"老五");
            ps.setInt(4,18);
            int a=ps.executeUpdate();
            System.out.println(a>0?"添加成功":"添加失败");

            /*
                无论我们调用的是commit还是rollback都会导致本次事务结束。
             */
            conn.commit();//最终操作全部完毕，可以提交事务，则调用commit
            System.out.println("事务提交了!");

//            conn.rollback();//如果后续操作失败了，调用rollback回滚事务
//            System.out.println("事务回滚了!");

            //如果下面有开始执行新的DML操作时，则会开启一个新的事务。。。

        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }
}
